﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
using System.Data.SqlClient;
using ddcCajamarca.BusinessEntities.Directorio;
using ddcCajamarca.Repository.Directorio.Service;

namespace ddcCajamarca.Repository.Directorio
{
    public class SubTipoOrganizacionRepository : MasterRepository, ISubTipoOrganizacionRepository
    {
        public SubTipoInstitucion GetFromSubTipoInstitucionbyId(int id)
        {
            return Context.SubTipoInstituciones.Find(id);
        }

        public IEnumerable<SubTipoInstitucion> GetAllSubTipoInstitucion(int idTipo)
        {
            var query = Context.Database.SqlQuery<SubTipoInstitucion>("dbo.ShowAllSubTipoOrganizacion @idTipo = '" + idTipo + "'").ToList();

            return query;
        }

        public IEnumerable<SubTipoInstitucion> GetAllSubTipoInstitucionLista()
        {
            var query = Context.Database.SqlQuery<SubTipoInstitucion>("dbo.ShowAllSubTipoOrganizacionLista").ToList();

            return query;
        }

        public IEnumerable<SubTipoInstitucion> GetSubTipoInstitucionByCriterio(string criterio)
        {
            IEnumerable<SubTipoInstitucion> query;

            if (String.IsNullOrEmpty(criterio))
            {
                query = Context.Database.SqlQuery<SubTipoInstitucion>("dbo.ShowAllSubTipoOrganizacionLista").ToList();
            }
            else
            {
                query = Context.Database.SqlQuery<SubTipoInstitucion>("dbo.ShowSubTipoOrganizacionByCriterio @descripcion = '" + criterio + "'").ToList();
            }

            return query;
        }

        public void AddSubTipoInstitucion(SubTipoInstitucion subTipoInstitucion)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditProfession @id= '"
                + subTipoInstitucion.Id + "', @Nombre = '"
                + subTipoInstitucion.Nombre + "', @Descripcion = '"
                + subTipoInstitucion.Descripcion + "', @idTipoOrganizacion = '"
                + subTipoInstitucion.idTipoOrganizacion + "'");
        }

        public void UpdateSubTipoInstitucion(SubTipoInstitucion subTipoInstitucion)
        {
            Context.Database.ExecuteSqlCommand("dbo.NewOrEditProfession @id= '"
                + subTipoInstitucion.Id + "', @Nombre = '"
                + subTipoInstitucion.Nombre + "', @Descripcion = '"
                + subTipoInstitucion.Descripcion + "', @idTipoOrganizacion = '"
                + subTipoInstitucion.idTipoOrganizacion + "'");
        }

        public void DeleteSubTipoInstitucion(int id)
        {
            var existe = GetFromSubTipoInstitucionbyId(id);

            try
            {
                if (existe != null)
                {
                    Context.Database.ExecuteSqlCommand("dbo.DeleteSubTipoOrganizacion @id = '" + id + "'");
                }
            }
            catch (Exception e)
            {

            }
        }
    }
}
